Cloud Build waitFor の挙動
#blogged Cloud Build の waitFor の挙動 - ぽ靴な缶
ビルドステップの順序の構成  |  Cloud Build のドキュメント  |  Google Cloud
waitFor の値が指定されない場合、ビルドステップは、ビルド リクエスト内の先行するすべてのビルドステップが正常に完了するまで待機した後に実行されます。
実は直前のやつが終わったら動いたりしないか
"先行する" は
yaml のタスク定義上?
実行開始タイミング?
code:cloudbuild.yaml
steps:
- id: prepare
name: alpine:latest
entrypoint: /bin/echo
args: "prepare"
# pararell
- id: task1
name: alpine:latest
entrypoint: /bin/ash
args: "-c", "sleep 20s"
waitFor: "prepare"
- id: task2-1
name: alpine:latest
entrypoint: /bin/ash
args: "-c", "sleep 10s"
waitFor: "prepare"
# waitFor なしのこれはいつ実行される?
# - task1 も task2 も待つ
# - task1 がコケたら始まらない?
# - 実は直前のやつが終われば動く
- id: task2-2
name: alpine:latest
entrypoint: /bin/ash
args: "-c", "sleep 10s"
- id: task3
name: alpine:latest
entrypoint: /bin/ash
args: "-c", "sleep 30s"
waitFor: "prepare"
- id: last
name: alpine:latest
entrypoint: /bin/ash
args: "-c", "sleep 10s"
やってみる
$ gcloud builds submit --config ./cloudbuild.yaml .
task3, task2-1 , task1 は同時に起動する
waitFor しているやつは LIFO なのか、毎回 yaml 上では後のほうが先に実行される印象がある
task2-2 は
task1 と task2-1 を待つ
直前の task2-1 だけでなく task1 も待つので yaml 定義上先に定義しているものを待つ
task3 を待たない
先に起動されていても待ってない → "先行する" はタスク定義上の順序
code:steps.log
BUILD
Starting Step #0 - "prepare"
Step #0 - "prepare": Pulling image: alpine:latest
Step #0 - "prepare": latest: Pulling from library/alpine
Step #0 - "prepare": e6b0cf9c0882: Pulling fs layer
Step #0 - "prepare": e6b0cf9c0882: Verifying Checksum
Step #0 - "prepare": e6b0cf9c0882: Download complete
Step #0 - "prepare": e6b0cf9c0882: Pull complete
Step #0 - "prepare": Digest: sha256:3983cc12fb9dc20a009340149e382a18de6a8261b0ac0e8f5fcdf11f8dd5937e
Step #0 - "prepare": Status: Downloaded newer image for alpine:latest
Step #0 - "prepare": docker.io/library/alpine:latest
Step #0 - "prepare": prepare
Finished Step #0 - "prepare"
Starting Step #4 - "task3"
Starting Step #2 - "task2-1"
Starting Step #1 - "task1"
Step #1 - "task1": Already have image: alpine:latest
Step #4 - "task3": Already have image: alpine:latest
Step #2 - "task2-1": Already have image: alpine:latest
Finished Step #2 - "task2-1"
Finished Step #1 - "task1"
Starting Step #3 - "task2-2"
Step #3 - "task2-2": Already have image: alpine:latest
Finished Step #4 - "task3"
Finished Step #3 - "task2-2"
Starting Step #5 - "last"
Step #5 - "last": Already have image: alpine:latest
Finished Step #5 - "last"
PUSH
DONE
#Cloud_Build #GoogleCloud